<?php
/**
 * Created by PhpStorm.
 * Author: Anh Nguyen
 * Date: 4/17/14
 * Time: 10:42 AM
 */

require_once '../utils/Validator.php';
require_once '../model/main.php';

$res = array(
    'err'   =>  array(),
    'stt'   =>  0
);

if(!isset($_POST["username"])
//    || !checks::is_ajax_request()
) {

    $res['err'][] = "Từ chối truy cập!";
} else {

    $validator = new Validator($_POST);

    $validator
        ->required("Tên đăng nhập không được bỏ trống")
        ->minlength(6, "Tên đăng nhập ít nhất 6 ký tự")
        ->maxlength(20, "Tên đăng nhập nhiều nhất 20 ký tự")
        ->validate("username");

    $validator
        ->required("Mật khẩu không được bỏ trống")
        ->callback(function($val) {

            return preg_match('/^[A-Za-z0-9_]+$/', $val) != 0;
        }, "Mật khẩu không chính xác")
        ->validate("pass");

    $validator
        ->matches("pass", "Xác nhận mật khẩu không khớp")
        ->validate("repass");

    $validator
        ->required("Email không được bỏ trống")
        ->email("Email không chính xác")
        ->validate("email");

    $validator
        ->required("Họ tên không được bỏ trống")
        ->minlength(5, "Họ tên ít nhất 5 ký tự")
        ->maxlength(50, "Họ tên nhiều nhất 50 ký tự")
        ->validate("fullname");

    $validator
        ->required("Số điện thoại không được bỏ trống")
        ->callback(function($val) {

            return preg_match('/^0\d{9,10}$/', $val) != 0;
        }, "Số điện thoại không chính xác")
        ->validate("mobilephone");

    $validator
        ->required("Không được bỏ qua giới tính")
        ->digits("Giới tính không chính xác")
        ->validate("gender");

    $validator
        ->required("Không được bỏ qua năm sinh")
        ->digits("Năm sinh không chính xác")
        ->validate("birthyear");

    $validator
        ->required("Thành phố không chính xác")
        ->validate("city");

    $validator
        ->required("Tên cửa hàng không được bỏ trống")
        ->maxlength(30, "Tên cửa hàng nhiều nhất 30 ký tự")
        ->validate("shopname");

    $validator
        ->required("Địa chỉ cửa hàng không được bỏ trống")
        ->minlength(6, "Địa chỉ cửa hàng ít nhất 6 ký tự")
        ->maxlength(100, "Địa chỉ cửa hàng nhiều nhất 100 ký tự")
        ->validate("addressshop");

    $validator
        ->required("Địa chỉ facebook không được bỏ trống")
        ->minlength(6, "Địa chỉ facebook ít nhất 6 ký tự")
        ->maxlength(100, "Địa chỉ facebook nhiều nhất 100 ký tự")
        ->url("Địa chỉ facebook không chính xác")
        ->validate("addressfacebook");

    $res["err"] = $validator->getAllErrors();

    if(!count($res["err"])) {

        $arrInsert = array(
            "username"        => $_POST["username"],
            "pass"            => $_POST["pass"],
            "email"           => $_POST["email"],
            "fullname"        => $_POST["fullname"],
            "mobilephone"     => $_POST["mobilephone"],
            "gender"          => $_POST["gender"],
            "birthyear"       => $_POST["birthyear"],
            "city"            => $_POST["city"],
            "shopname"        => $_POST["shopname"],
            "addressshop"     => $_POST["addressshop"],
            "addressfacebook" => $_POST["addressfacebook"]
        );

        $arrInsert['ipaddress'] = checks::checkIPClient();

        $regexFb = '/^(http|https):\/\/(www\.)?facebook\.com\/(?P<facebook>[\w]+)?$/';
        $matches = array();
        preg_match($regexFb, $arrInsert['addressfacebook'], $matches);

        $arrInsert['addressfacebook'] = $matches['facebook'];

        $query = new query();

        if($query->insertaccount($arrInsert)) {

            $res['stt'] = 1;
        } else {

            $res['err'][] = "Có lỗi xảy ra, vui lòng thử lại!";
        }
    }
}

echo json_encode($res);